/*
 * 1.00 2012/09/27
 *
 * Copyright (c) 2012 Motch_bs
 * All rights reserved.
 *
 * このソフトウェアは，Motch_bsに所有される機密情報である。
 * これらの機密情報を漏洩してはならず，Motch_bs の意図する
 * 認可の元においてこれを使用すべし。
 */
package jp.co.ufp.sevendaystask_free.logics;

import jp.co.ufp.sevendaystask_free.R;
import jp.co.ufp.sevendaystask_free.constants.C;
import jp.co.ufp.sevendaystask_free.forms.ListTimeForm;
import jp.co.ufp.sevendaystask_free.listners.ListTimeFormOnClickListener;
import jp.co.ufp.sevendaystask_free.storage.QueryManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * @author Motch_bs
 * 
 */
public class Logic020 {

    /** 時刻表示リストビュー */
    private ListTimeForm listTimeForm;

    /** データベースヘルパー */
    private QueryManager queryManager;

    /** 曜日文字列配列 */
    //private String[] menuItems;

    /** カーソル */
    private Cursor cursor;

    /**
     * @param pListTimeForm
     * @param pQueryManager
     */
    public Logic020(ListTimeForm pListTimeForm, QueryManager pQueryManager) {
	super();
	this.listTimeForm = pListTimeForm;
	this.queryManager = pQueryManager;
    }

    /**
     * 初期化
     */
    public void initializing() {
	// 曜日文字列配列取得
	//menuItems = Logic001.getMenuItems(listTimeForm);
    }

    /**
     * 一日のデータを取得する
     * 
     * @param position_week
     * @return Cursor
     */
    public Cursor find(
	SQLiteDatabase database,
	int position_week) {

	// 列を定義
	String[] columns = new String[] {
	    C.TASKID,
	    C.WEEKDAY,
	    C.TIME_START,
	    C.TIME_END,
	    C.TASK_TITLE,
	    C.TASK_MEMO,
	    C.TASK_COLOR
	};
	// where句
	String selection = C.WEEKDAY + " = ?";
	// where句の値
	String[] selectionArgs = {
	    Integer.valueOf(position_week).toString()
	};
	// データを取得
	Cursor cursor = database.query(
	    C.TABLE, columns, selection, selectionArgs, null, null, "TIME_START," + C.TASKID);

	return cursor;
    }

    /**
     * 1週間の曜日のリストを取得
     * 
     * @param position_week
     * @return
     */
    public void addListFromDB(
	LinearLayout linerLayout,
	int position_week) {
	// 一旦レイアウト内部をクリアする。
	linerLayout.removeAllViews();
	//String titleDetail = listTimeForm.getResources().getString(R.string.title_schedules);
	// ヘッダ用テキストViewを生成
	//TextView titleRow = new TextView(listTimeForm);
	//titleRow.setText(menuItems[position_week] + " - " + titleDetail);
	//titleRow.setTextSize(C.FONT_SIZE);
	//titleRow.setTextColor(Color.GREEN);
	//linerLayout.addView(titleRow);

	// データベースをオープンする
	SQLiteDatabase database = queryManager.getWritableDatabase();
	// データベースカーソル取得
	cursor = find(database, position_week);
	// カーソルを先頭行へ
	cursor.moveToFirst();
	int maxSize = cursor.getCount();
	for (int i = 0; i < maxSize; i++) {
	    int id = cursor.getInt(0);
	    String timeStart = cursor.getString(2);
	    String timeEnd = cursor.getString(3);
	    String taskTitle = cursor.getString(4);
	    String taskMemo = cursor.getString(5);
	    int taskColor = cursor.getInt(6);
	    cursor.moveToNext();
	    // 行のViewを生成
	    TextView cell = new TextView(listTimeForm);
	    cell.setText(timeStart + " - " + timeEnd + "\n");
	    cell.append(taskTitle + "\n");
	    //cell.append(taskMemo);
	    cell.setTextSize(C.FONT_SIZE);
	    cell.setBackgroundResource(R.drawable.time_taskbox_style);
	    cell.setBackgroundColor(taskColor);
	    cell.setId(id);
	    ListTimeFormOnClickListener l = new ListTimeFormOnClickListener(id, position_week, timeStart, timeEnd, taskTitle, taskMemo, taskColor, listTimeForm);
	    cell.setOnClickListener(l);
	    linerLayout.addView(cell, createParam(C.FP, C.FP, 1));
	}
	cursor.close();
	database.close();
    }

    /**
     * レイアウトを生成
     * 
     * @param width
     * @param height
     * @param weight
     * @return LayoutParams
     */
    private LinearLayout.LayoutParams createParam(
	int width, int height, int weight) {
	return new LinearLayout.LayoutParams(width, height, weight);
    }
}
